import { defineStore } from 'pinia';

import {
    loginout,
    loginUser,
    userLogin
} from '@/api/modules/user';

export const useUserStore = defineStore({
    // id: 必须的，在所有 Store 中唯一
    id: 'userState',
    // state: 返回对象的函数
    state: () => ({
        // 登录token
        // token: localStorage.getItem('secret') || '',
        token: '111',
        // 登录用户信息
        userInfo: {
            name: '潇宇',
            username: ''
        },
        // 角色
        roles: [],
        permissions: []
    }),
    getters: {},
    // 可以同步 也可以异步
    actions: {
        // 登录
        login(userInfo) {
            return new Promise(async (resolve, reject) => {
                // try {
                //     const res = await userLogin(userInfo)
                //     if (res?.data?.access_token) {
                //         this.token = res.data.access_token
                //         localStorage.setItem('secret', res.data.access_token)
                //     }
                //     // await this.getInfo()
                //     // await this.getRoles()
                //     resolve(userInfo.name)
                // } catch {
                //     reject()
                // }
            })
        },
        // 获取用户授权角色信息，实际应用中 可以通过token通过请求接口在这里获取用户信息
        getRoles() {
            return new Promise((resolve, reject) => {
                // 获取权限列表 默认就是超级管理员，因为没有进行接口请求 写死
                this.roles = ['admin']
                localStorage.roles = JSON.stringify(this.roles)
                resolve(this.roles)
            })
        },
        // 获取用户信息 ，如实际应用中 可以通过token通过请求接口在这里获取用户信息
        getInfo() {
            return new Promise(async (resolve, reject) => {
                // const res = await loginUser()
                // this.userInfo = res.data.sysUser
                // this.permissions = res.data.permissions
                // // this.roles = res.data.roles
                // // this.roles = roles
                // resolve(res.data)
            })
        },
        //退出调用接口
        logout() {
            return new Promise(async (resolve, reject) => {
                const res = await loginout()
                if (res?.success) {
                    localStorage.setItem('secret', '')
                    this.token = null
                    this.userInfo = {}
                    this.permissions = []
                    this.roles = []
                    resolve(null)
                } else {
                    reject('退出登录失败')
                }
            })
        },
        //退出不调用接口
        logoutNo() {
            return new Promise(async (resolve, reject) => {
                localStorage.setItem('secret', '')
                this.token = null
                this.userInfo = {}
                this.permissions = []
                this.roles = []
                resolve(null)
            })
        },
    },
    // 进行持久化存储
    // persist: {
    //     // 本地存储的名称
    //     key: "userState",
    //     //保存的位置
    //     storage: window.localStorage,//localstorage
    // },

})
